The present invention relates generally to data communications. More particularly, the present invention relates to preventing buffer overflow in routers and similar network devices.
FIG. 1 depicts a conventional data communications network 100 that comprises a first plurality of network devices 104A-N that exchange Transport Control Protocol (TCP) packets of data with a second plurality of network devices 106A-N over two or more networks including networks 108A,B connected by a conventional router 102. Each network device 104, 106 comprises a peer-to-peer protocol stack, such as a TCP protocol stack, with dynamically adjustable or pre-negotiated transmit window sizes. The transmit window size for a network device defines the maximum amount of data that can be in transit to that network device at any time. Hence, no peer device sends a burst of continuous data to the network device that is larger than the device's transmit window. A pair of network devices 104, 106 negotiates a window size for one or both devices based on the device's internal pre-configuration, and may adjust the window size according to link bandwidth or round-trip delay. Neither network device 104, 106 allows the amount of pending transmitted data (that is, data transmitted by one network device 104, 106 in the session but not yet acknowledged by the other network device 104, 106 in the session) to exceed the transmit window size.
But while this technique protects network devices 104, 106 in a session from overflows, it does not similarly protect intermediate devices such as switches or router 102 that must handle many such sessions simultaneously. The frequent result is packet buffer overflows in the intermediate devices, resulting in dropped packets and consequent retransmission of those packets, which adversely affects the performance of the data communications network 100.